<?php
/**
 * cofiguracao.php
 *
 * @abstract Arquivo contendo todas as configura��es
 * principais e essenciais para o funcionamento
 * do framework. Devera ser incluido no arquivo
 * principal do sistema.
 *
 * @example
 * requery_once("sistema/configuracao.php");
 *
 * @author Alexandre Magno Semmer
 * @version 2.0
 * @since 15/12/2007
 * @package sistema
 * @copyright Webgenium
 */

/**
 * Seta o timezone da data que o sitema ir�
 * utilizar, no caso, o formato de data Brasileiro
 */
date_default_timezone_set("America/Sao_Paulo");

/**
 * SISTEMA_DIR
 *
 * @abstract Constante de configura��o do diret�rio do sistema,
 * que poder� ser utilizada em qualquer classe.
 *
 */
define('SISTEMA_DIR', '/var/www/esperto/trunk/esperto/');
define('SISTEMA_IMG_DIR', '/var/www/esperto/trunk/esperto/imgQuestions/');

/**
 * SISTEMA_URL
 *
 * @abstract Constante de configura��o da url do sistema,
 * que poder� ser utilizada em qualquer classe.
 *
 */
define('SISTEMA_URL', 'http://localhost/esperto/trunk/esperto/');
define('SISTEMA_IMG_URL', 'http://localhost/esperto/trunk/esperto/imgQuestions/');

define("SITUACAO_ATIVO","Ativo");
define("SITUACAO_INATIVO","Inativo");
define("SITUACAO_DESENVOLVIMENTO","Desenvolvimento");

define("ROLE_OWNER","Owner");
define("ROLE_COLLABORATOR","Collaborator");

/**
 * error_reporting
 *
 * @abstract Fun��o que seta os erros que dever�o ser
 * tratado pelo PHP, no caso todo tipo de erro gerado
 * pelo PHP
 *
 */
//error_reporting(E_ALL | E_STRICT);

/**
 * set_error_handler
 *
 * @abstract M�todo que seta qual fun��o sera chamada
 * quando ocorrer um erro gerado pelo PHP.
 *
 */
//set_error_handler('my_error_handler');

/**
 * my_error_handler()
 *
 * @abstract Configura��o das Exception do PHP, que ser�o
 * interceptadas pelo sistema, possibilitando a padroniza��o
 * das mensagens de erros, al�m de aumentar a seguran�a do
 * c�digo escrito.
 *
 * @return String
 * @param $code Integer
 * @param $message String
 * @param $file String
 * @param $line Integer
 */
function my_error_handler($code, $message, $file, $line){

	$code = $code & error_reporting();
	if($code == 0) return;
	if(!defined('E_STRICT'))            define('E_STRICT', 2048);
	if(!defined('E_RECOVERABLE_ERROR')) define('E_RECOVERABLE_ERROR', 4096);

	switch($code){
		case E_ERROR:
			$tipo = "<b>ERRO:</b>";
			break;
		case E_WARNING:
			$tipo = "<b>AVISO:</b>";
			break;
		case E_PARSE:
			$tipo = "<b>ERRO ESCRITA:</b>";
			break;
		case E_NOTICE:
			$tipo = "<b>OBSERVA��O:</b>";
			break;
		case E_CORE_ERROR:
			$tipo = "<b>ERRO INTERNO DO PHP:</b>";
			break;
		case E_CORE_WARNING:
			$tipo = "<b>AVISO INTERNO DO PHP:</b>";
			break;
		case E_COMPILE_ERROR:
			$tipo = "<b>ERRO DE COMPILA��O:</b>";
			break;
		case E_COMPILE_WARNING:
			$tipo = "<b>AVISO DE COMPILA��O:</b>";
			break;
		case E_USER_ERROR:
			$tipo = "<b>ERRO DE USU�RIO:</b>";
			break;
		case E_USER_WARNING:
			$tipo = "<b>AVISO AO USU�RIO:</b>";
			break;
		case E_USER_NOTICE:
			$tipo = "<b>OBSERVA��O AO USU�RIO:</b>";
			break;
		case E_STRICT:
			$tipo = "<b>OBSERVA��O ESTRITA:</b>";
			break;
		case E_RECOVERABLE_ERROR:
			$tipo = "<b>RECOBERABLE ERROR:</b>";
			break;

		default:
			$tipo = sprintf("<b>ERRO DESCONHECIDO: (%s) </b>",$code);
			break;
	}

	$err = sprintf("<br><p>
						<div style='color:#FFFFFF;background-color:#666666; padding:1px'><h2>%s</h2></div>
						<b>C�DIGO</b> : %d <br>
						<b>MENSAGEM</b> : %s <br>
						<b>ARQUIVO</b> : %s <br>
						<b>LINHA</b> : %s
						<div style='color:#FFFFFF;background-color:#666666'>&nbsp;</div>
						</p>",
	$tipo,
	$code,
	$message,
	$file,
	$line);

	echo $err;

}

/**
 * __autoload()
 *
 * @abstract Função que é invocada sempre que uma
 * classe é instanciada e seu arquivo correspondente
 * nãoo foi incluido.
 *
 * @param string $classe
 * @return boolean
 *
 *
 */
function __autoload($classe) {

	if(class_exists($classe)){
		return true;
	}

	$caminho  = explode('_',$classe);
	$arquivo  = SISTEMA_DIR . strtolower(implode("/",$caminho)) . ".php";
	
	try{

		if (file_exists($arquivo)) {
			require_once $arquivo;
			return true;
		} else {
			$mensagem = sprintf("Arquivo não existe : <i style='color:#3333FF'>%s</i>",$arquivo);
			throw new Sistema_Excessoes($mensagem,0);
		}
	}catch(Sistema_Excessoes $e){
		echo($e);
	}
}
?>